package com.example.mybank.entity;

import java.util.Date;

import javax.validation.constraints.NotNull;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.example.mybank.tool.MyException;
import com.example.mybank.tool.RedisTool;
import com.example.mybank.tool.ResultCode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
/**
 * 存款产品
 */
public class Product {

    // 产品编号
    @TableId(type = IdType.AUTO)
    Long id;

    // 开始时间
    @NotNull(message = "开始时间不能为空")
    Date time_from;

    // 结束时间
    @NotNull(message = "结束时间不能为空")
    Date time_end;

    // 总数
    @NotNull(message = "总数不能为空")
    Long count;


    // 售出数量
    @NotNull(message = "总数不能为空")
    Long count_sale;

    // 利率
    @NotNull(message = "利率不能为空")
    Float rate;

    // 定存年限
    @NotNull(message = "定存年限不能为空")
    Long year;

    // 定存金额
    @NotNull(message = "定存金额不能为空")
    Long money;

    // 有效性检查
    @NotNull(message = "请确定是否有效")
    Boolean is_effect;


    // 是否已经加载到redis
    @NotNull(message = "请确定是否有效")
    Boolean is_load;


    // 是否已经加载从redis删除
    @NotNull(message = "请确定是否有效")
    Boolean is_delete;

    // 创建者
    Long create_admin;
    
    // 最后更新者
    Long update_admin;

    // 创建时间
    Date create_datetime;

    // 最后更新时间
    Date update_datetime;

    // 单人最大购买份数
    @NotNull(message = "请确定单人最大购买份数")
    Long buy_max;

    // 决策引擎
    Long engine;


    public boolean isInTime(){
        Date date = new Date();
//        System.out.println("now:"+date);
//        System.out.println("from:"+this.getTime_from());
//        System.out.println("end:"+this.getTime_end());
        return date.after(this.getTime_from()) && date.before(this.getTime_end());
    }
}
